package hcn.service.registration;

import hcn.protocol.brandnew.dengji.guahao.AppointmentPayResponse;
import hcn.util.PageInfo;
import ctd.controller.exception.ControllerException;
import ctd.util.annotation.RpcService;
import hcn.protocol.ods.stopRegPlan.ListRosteringXMLResp;
import hcn.protocol.registration.*;

import java.util.Date;
import java.util.List;

public interface RegistrationApi {

    @RpcService
    List<HospitalResponse> getHospitalInformation(Organization organization, Date lastModifyTime, String Source) throws ControllerException;//获取医院信息（同步）
    @RpcService
    List<DeptmentResponse> listDepartment(Organization organization, int outpatientType, String departmentCode, Date lastModifyTime, String Source)throws ControllerException;//获取科室信息（同步）
    @RpcService
    List<DoctorResponse> listDoctor(Organization organization, String departmentCode, String scheduleDate, String doctorCode, String doctorType, int outpatientType, Date lastModifyTime, String Source)throws ControllerException;//获取医生列表（同步）
    @RpcService
    List<SearchDoctorResponse> queryDeptAndDoctor(Organization organization, String query, String outpatientType, String Source)throws ControllerException;//科室医生搜索
    @RpcService
    List<ScheduleResponse> listSchedule(ScheduleRequest scheduleRequest, String Source)throws ControllerException;//获取排班
    @RpcService
    List<RegplanResponse> listNumber(RegplanRequest regplanRequest, String Source)throws ControllerException;//获取号源接口
    @RpcService
    RegInfoResponse confirmAppointment(RegInfoRequest regInfoRequest, String Source)throws ControllerException;//提交预约
    @RpcService
    YJSResponse paymentBudget(Organization organization, String hisOrderNumber, String Source)throws ControllerException;//预结算
    @RpcService
    String appointmentPayCancel(Organization organization,String workId,String doctorCode,String arrangeId, String hisOrderNumber, String refundReason, int outpatientType, String Source,String cancelOperator)throws ControllerException;//取消预约
    @RpcService
    String regReturn(Organization organization, String hisOrderNumber, String refundReason, int outpatientType, String Source,String cancelOperator,String outRegistryId)throws ControllerException;//取消预约
    @RpcService
    AppointmentPayResponse appointmentPay(RegPayRequest regPayRequest, String Source)throws ControllerException;//预约支付
    @RpcService
    List<OrderStatusResponse> syncOrderState(Organization organization, String scheduleDate, Date lastModifyTime, String Source) throws ControllerException;//同步预约情况
    @RpcService
    List<StopWorkResponse> getCanceledWorks(Organization organization, String startTime, String endTime, String Source) throws ControllerException;//停诊通知
    @RpcService
    PageInfo<TakeNumberResponse> listNumber(TakeNumberRequest takeNumberRequest, String Source) throws ControllerException;//签到取号列表
    @RpcService
    TakeNumberResponse getRegistrationForm(Organization organization, String hisOrderNumber, String Source) throws ControllerException;//挂号单列表
    @RpcService
    TakeNumberResponse takeNumber(Organization organization, String hisOrderNumber, String Source) throws ControllerException;//取号
    @RpcService
    void submitPreDiagnosis(Organization organization,String hisOrderNumber, String text,String source)throws ControllerException;//

    @RpcService
    List<ListRosteringXMLResp.Work> queryRegDoctorList(String organizationId, String departmentCode, String beginScheduleDate,String endScheduleDate, String doctorCode,String resourceLevelCode,String source) throws ControllerException;
}
